package case6

import "fmt"

/** 接口示例6

1. 接口的嵌套   */

// 尽管 Go 语言没有提供继承机制，但可以通过嵌套其他的接口，创建一个新接口。我们来看看这如何实现。
func case1() {
	p1 := person{"小红", 88}

	var paction personAction = p1
	paction.eat()
	paction.speak()
	paction.recitation()
}

func Test() {

	case1()
}

// 定义学习行为接口
type studyAction interface {
	recitation() //朗读
}

// 定义基本行为接口
type baseAction interface {
	speak() //说话
	eat()   //吃饭
}

// 定义人行为接口
type personAction interface {
	studyAction
	baseAction
}

type person struct {
	name string
	age  int
}

func (p person) recitation() {
	fmt.Println("学习行为，朗读，", p.name)
}

func (p person) speak() {
	fmt.Println("基本行为，说话，", p.name)
}
func (p person) eat() {
	fmt.Println("基本行为，吃饭，", p.name)
}
